# 类的属性分为三种

class Hero():
    # 类属性
    jineng_num = 4   # 技能数-4，类属性
    __value1 = 1
    def __init__(self):
        """
        __init__方法会在创建对象时自动执行
        """
        self.name = '盖伦'
        self.HP = 2000
        self.__value2 = 2
        print("执行__init__方法")

    def info(self):
        # self.value = '盖伦的大宝剑'
        print("执行info方法")

    # 私有属性只能在类的内部使用
    def get_value(self):
        print(self.__value2)
        print(self.__value1)

    # 私有属性只能在类中修改
    def set_value(self):
        self.__value1 = 'abc'
        self.__value2 = "坚果"

# 实例化一个对象
gailun = Hero()
# gailun.info()

# # 类属性的调用
# print(Hero.jineng_num)
# # print(Hero.name)
# print(Hero().name)

# # 使用实例属性，直接是：对象名.实例属性
# print(gailun.name)
# print(gailun.HP)
# print(gailun.value)
# # 对象可以直接使用类属性:对象名.类属性
# print(gailun.jineng_num)


# 私有属性,在类的外部,不能直接使用私有属性
gailun.get_value()
# 不能直接修改私有属性
gailun.set_value()
gailun.get_value()


# 总结:
# 类属性:
#         是这个类有的属性
#         可以通过[类.属性名]的方式直接调用
#         也可以通过[对象.属性名]的方式调用
# 实例属性:
#         是实例化对象后,对象的属性
#         可以通过[对象.属性名]的方式调用
#         可以直接修改[对象.属性名 = 新的属性值]
# 私有属性:
#         只能在类的内部使用
#         在类的外部不能直接访问或编辑
